/**
 * 微信公众号功能测试脚本
 * 使用方法：node test/wechat-test.js
 */

require('dotenv').config();
const WechatOfficialService = require('../utils/WechatOfficialService');

async function testWechatConfig() {
  console.log('🧪 开始测试微信公众号配置...\n');

  // 1. 检查环境变量
  console.log('1. 检查环境变量配置:');
  console.log(`   WECHAT_OFFICIAL_APPID: ${process.env.WECHAT_OFFICIAL_APPID ? process.env.WECHAT_OFFICIAL_APPID.substring(0, 10) + '...' : '❌ 未配置'}`);
  console.log(`   WECHAT_OFFICIAL_SECRET: ${process.env.WECHAT_OFFICIAL_SECRET ? '✅ 已配置' : '❌ 未配置'}`);
  console.log(`   WECHAT_OFFICIAL_TOKEN: ${process.env.WECHAT_OFFICIAL_TOKEN || '❌ 未配置'}`);
  console.log(`   WECHAT_TEMPLATE_LISTING_ALERT: ${process.env.WECHAT_TEMPLATE_LISTING_ALERT || '❌ 未配置'}\n`);

  // 2. 测试签名验证
  console.log('2. 测试签名验证:');
  try {
    const timestamp = '1234567890';
    const nonce = 'test123';
    const testSignature = 'test_signature';

    const result = WechatOfficialService.verifySignature(testSignature, timestamp, nonce);
    console.log(`   签名验证功能: ${result === false ? '✅ 正常' : '⚠️ 异常'} (预期返回false)\n`);
  } catch (error) {
    console.log(`   签名验证功能: ❌ 异常 - ${error.message}\n`);
  }

  // 3. 测试获取access_token
  if (process.env.WECHAT_OFFICIAL_APPID && process.env.WECHAT_OFFICIAL_SECRET) {
    console.log('3. 测试获取access_token:');
    try {
      const accessToken = await WechatOfficialService.getAccessToken();
      console.log(`   access_token: ✅ 获取成功 (${accessToken.substring(0, 20)}...)\n`);
    } catch (error) {
      console.log(`   access_token: ❌ 获取失败 - ${error.message}\n`);
    }
  } else {
    console.log('3. 跳过access_token测试 (AppID或Secret未配置)\n');
  }

  // 4. 测试URL验证
  console.log('4. 服务器URL配置:');
  console.log('   验证URL: https://yaotuss.com/api/v1/wechat-official/callback');
  console.log('   请在微信公众平台配置此URL进行验证\n');

  console.log('🎉 测试完成！');
  console.log('\n📋 下一步操作:');
  console.log('   1. 确保所有环境变量都已正确配置');
  console.log('   2. 重启服务器: npm restart 或 pm2 restart');
  console.log('   3. 在微信公众平台配置服务器URL');
  console.log('   4. 测试服务器验证是否成功');
}

// 运行测试
testWechatConfig().catch(console.error);